<?php

use Illuminate\Support\Facades\Auth;

if (!function_exists('is_email')) {
    /**
     * 验证是否是一个邮箱格式
     *
     * @param $email string
     *
     * @return bool
     */
    function is_email($email)
    {
        return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
    }
}

if (!function_exists('mb_length')) {
    /**
     * 获取中文字符长度
     *
     * @param $value string
     *
     * @return int
     */
    function mb_length($value)
    {
        return mb_strlen($value, 'gb2312');
    }
}

if (!function_exists('is_username')) {
    /**
     * 验证是否是一个用户名格式
     * 用户名规则: 除`@#/*()外的任意字符串,不能为纯数字, 4-20个字符,中文占2个字符
     *
     * @param $userName string
     *
     * @return bool
     */
    function is_username($userName)
    {
        $length = mb_length($userName);
        return $length >= 4 && $length <= 20 && !str_contains($userName,
                ['`', '@', '#', '/', '*', '(', ')']) && preg_match('/^\d+$/', $userName) !== 1;
    }
}

if (!function_exists('is_mobile')) {
    /**
     * 验证是否是一个手机号格式
     *
     * @param $mobile string
     *
     * @return bool
     */
    function is_mobile($mobile)
    {
        return preg_match('/^1\d{10}$/', $mobile) === 1;
    }
}

if (!function_exists('is_login')) {
    /**
     * 是否已登录
     *
     * @param string|null $guard
     *
     * @return bool
     */
    function is_login($guard = null)
    {
        return Auth::guard($guard)->check();
    }
}

if (!function_exists('user')) {
    /**
     * 返回当前登录的用户
     *
     * @return \App\Models\User|null
     */
    function user()
    {
        return auth()->guard('web')->user();
    }
}

if (!function_exists('admin')) {

    /**
     * 返回当前登录的管理员
     *
     * @return \App\Models\Admin|null
     */
    function admin()
    {
        return auth()->guard('admin')->user();
    }
}

if (!function_exists('business')) {

    /**
     * 返回当前登录的商户
     *
     * @return \App\Models\Business|null
     */
    function business()
    {
        return auth()->guard('business')->user();
    }
}

if (!function_exists('route_path')) {

    /**
     * 返回路由文件路径
     *
     * @param null|string $path
     *
     * @return string
     */
    function route_path($path = null)
    {
        return $path === null ? base_path('routes') : base_path('routes/' . $path);
    }
}


if (!function_exists('token')) {

    /**
     * 生成Token
     *
     * @param int $length
     *
     * @return string
     */
    function token($length = 40)
    {
        return hash_hmac('sha256', str_random($length), config('app.key'));
    }
}
